package com.zhdl.modules.process;

import com.zhdl.common.ytools.callback.BoolCallback;
import com.zhdl.common.ytools.callback.CommonCallback;
import com.zhdl.modules.process.dto.MyEx;

import java.util.Map;

public interface CommonProcess {


    /**
     * 初始化 硬件 eventbus相关
     */
    void initHardware();

    /**
     * 初始化硬件初始位置
     */
    void initLocation(CommonCallback<String> complete);

    /**
     * 开始流程入口 -1开始标记
     */
    void startProcess(Integer process);

    /**
     * 检测是否可以开始流程
     *
     * @return true可以开始流程 false 检测条件不能开始
     */
    boolean checkStartItems();

    boolean start();

    /**
     * 停止流程
     */
    void stop();

    /**
     * 重新开始流程
     */
    void onPause();

    /**
     * 报警信息回调
     *
     * @param callback 回调
     */
    void setExCallBack(CommonCallback<MyEx> callback);

    /**
     * 消除报警
     */
    void cancelAlarm();

    /**
     * SSE 推送数据组装
     *
     * @param callback 回调
     */
    void setSSEData(CommonCallback<String> callback);

    /**
     * 开启校验
     */
    void openCheck(CommonCallback<Map<String, String>> callback);

    /**
     * 流程进度回调
     *
     * @param callback 流程步数回调
     */
    void processCallBack(BoolCallback<Integer> callback);

    /**
     * 完成队列
     *
     * @param completeMap 完成的队列
     */
    void setCompleteMap(Map<Integer, Boolean> completeMap);

}
